/**
 * 
 */
package impresor.etiquetas.model;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.hibernate.annotations.ForeignKey;
import org.hibernate.annotations.Type;

/**
 * @author Pablo Moreno
 * 
 */
@Entity
@Table(name = "TBL_Cliente", catalog = "matrix")
public class Cliente implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "CliId")
    private long idCliente;

    @Column(name = "CliRazonSocial")
    private String razonSocial;

    @Column(name = "CliNemotecnico")
    private String nemotecnico;

    @Column(name = "CliDomicilioCalle")
    private String domicilioCalle;

    @Column(name = "CliDomicilioNro")
    private String DomicilioNro;

    @Column(name = "CliDomicilioPiso")
    private String DomicilioPiso;

    @Column(name = "CliDomicilioDepto")
    private String domicilioDepto;

    @Column(name = "CliCuit")
    private String cuit;

    @ManyToOne
    @JoinColumn(name = "ConIvaId")
    @ForeignKey(name = "FK_TBL_Cliente_TBL_CondicionIVA")
    private CondicionIVA condIVA;

    @ManyToOne
    @JoinColumn(name = "NivFacId")
    @ForeignKey(name = "FK_TBL_Cliente_TBL_NivelFacturacion")
    private NivelDeFacturacion nivelFacturacion;

    @ManyToOne
    @JoinColumn(name = "CliEstId")
    private Estado estado;

    @Column(name = "CliDateAdded")
    private Date fechaAlta;

    @ManyToOne
    @JoinColumn(name = "CountyId")
    private Provincia provincia;

    @ManyToOne
    @JoinColumn(name = "CityId")
    private Ciudad ciudad;

    @ManyToOne
    @JoinColumn(name = "NeiId")
    private Barrio barrio;

    @Column(name = "CliCodigoPostal")
    private String codigoPostal;

    @Column(name = "CliDGR")
    private String DGR;

    @Column(name = "CliDGRInscripcion")
    private String inscripcionDGR;

    @Column(name = "CliPaginaWeb")
    private String url;

    @Column(name = "CliNroIngresosBrutos")
    private String ingresosBrutos;

    @Column(name = "CliObservaciones")
    private String observaciones;

    @ManyToOne
    @JoinColumn(name = "RubId")
    @ForeignKey(name = "FK_TBL_Cliente_TBL_Rubro")
    private Rubro rubro;

    @ManyToOne
    @JoinColumn(name = "ZonId")
    @ForeignKey(name = "FK_TBL_Cliente_TBL_Zona")
    private Zona zona;

    @Column(name = "IsDeleted", columnDefinition = "TINYINT")
    @Type(type = "org.hibernate.type.NumericBooleanType")
    private boolean eliminado;

    /**
     * @param razonSocial
     * @param nemotecnico
     * @param domicilioCalle
     * @param domicilioNro
     * @param cuit
     * @param condIVA
     * @param nivelFacturacion
     * @param estado
     * @param provincia
     * @param ciudad
     * @param barrio
     * @param ingresosBrutos
     * @param rubro
     * @param zona
     */
    public Cliente(String razonSocial, String nemotecnico, String domicilioCalle, String domicilioNro, String cuit,
	    CondicionIVA condIVA, NivelDeFacturacion nivelFacturacion, Estado estado, Provincia provincia,
	    Ciudad ciudad, Barrio barrio, String ingresosBrutos, Rubro rubro, Zona zona) {
	super();
	this.razonSocial = razonSocial;
	this.nemotecnico = nemotecnico;
	this.domicilioCalle = domicilioCalle;
	DomicilioNro = domicilioNro;
	this.cuit = cuit;
	this.condIVA = condIVA;
	this.nivelFacturacion = nivelFacturacion;
	this.estado = estado;
	this.provincia = provincia;
	this.ciudad = ciudad;
	this.barrio = barrio;
	this.ingresosBrutos = ingresosBrutos;
	this.rubro = rubro;
	this.zona = zona;
    }

    /**
     * @return the idCliente
     */
    public long getIdCliente() {
	return idCliente;
    }

    /**
     * @param idCliente
     *            the idCliente to set
     */
    public void setIdCliente(long idCliente) {
	this.idCliente = idCliente;
    }

    /**
     * @return the razonSocial
     */
    public String getRazonSocial() {
	return razonSocial;
    }

    /**
     * @param razonSocial
     *            the razonSocial to set
     */
    public void setRazonSocial(String razonSocial) {
	this.razonSocial = razonSocial;
    }

    /**
     * @return the nemotecnico
     */
    public String getNemotecnico() {
	return nemotecnico;
    }

    /**
     * @param nemotecnico
     *            the nemotecnico to set
     */
    public void setNemotecnico(String nemotecnico) {
	this.nemotecnico = nemotecnico;
    }

    /**
     * @return the domicilioCalle
     */
    public String getDomicilioCalle() {
	return domicilioCalle;
    }

    /**
     * @param domicilioCalle
     *            the domicilioCalle to set
     */
    public void setDomicilioCalle(String domicilioCalle) {
	this.domicilioCalle = domicilioCalle;
    }

    /**
     * @return the domicilioNro
     */
    public String getDomicilioNro() {
	return DomicilioNro;
    }

    /**
     * @param domicilioNro
     *            the domicilioNro to set
     */
    public void setDomicilioNro(String domicilioNro) {
	DomicilioNro = domicilioNro;
    }

    /**
     * @return the domicilioPiso
     */
    public String getDomicilioPiso() {
	return DomicilioPiso;
    }

    /**
     * @param domicilioPiso
     *            the domicilioPiso to set
     */
    public void setDomicilioPiso(String domicilioPiso) {
	DomicilioPiso = domicilioPiso;
    }

    /**
     * @return the domicilioDepto
     */
    public String getDomicilioDepto() {
	return domicilioDepto;
    }

    /**
     * @param domicilioDepto
     *            the domicilioDepto to set
     */
    public void setDomicilioDepto(String domicilioDepto) {
	this.domicilioDepto = domicilioDepto;
    }

    /**
     * @return the cuit
     */
    public String getCuit() {
	return cuit;
    }

    /**
     * @param cuit
     *            the cuit to set
     */
    public void setCuit(String cuit) {
	this.cuit = cuit;
    }

    /**
     * @return the condIVA
     */
    public CondicionIVA getCondIVA() {
	return condIVA;
    }

    /**
     * @param condIVA
     *            the condIVA to set
     */
    public void setCondIVA(CondicionIVA condIVA) {
	this.condIVA = condIVA;
    }

    /**
     * @return the nivelFacturacion
     */
    public NivelDeFacturacion getNivelFacturacion() {
	return nivelFacturacion;
    }

    /**
     * @param nivelFacturacion
     *            the nivelFacturacion to set
     */
    public void setNivelFacturacion(NivelDeFacturacion nivelFacturacion) {
	this.nivelFacturacion = nivelFacturacion;
    }

    /**
     * @return the estado
     */
    public Estado getEstado() {
	return estado;
    }

    /**
     * @param estado
     *            the estado to set
     */
    public void setEstado(Estado estado) {
	this.estado = estado;
    }

    /**
     * @return the fechaAlta
     */
    public Date getFechaAlta() {
	return fechaAlta;
    }

    /**
     * @param fechaAlta
     *            the fechaAlta to set
     */
    public void setFechaAlta(Date fechaAlta) {
	this.fechaAlta = fechaAlta;
    }

    /**
     * @return the provincia
     */
    public Provincia getProvincia() {
	return provincia;
    }

    /**
     * @param provincia
     *            the provincia to set
     */
    public void setProvincia(Provincia provincia) {
	this.provincia = provincia;
    }

    /**
     * @return the ciudad
     */
    public Ciudad getCiudad() {
	return ciudad;
    }

    /**
     * @param ciudad
     *            the ciudad to set
     */
    public void setCiudad(Ciudad ciudad) {
	this.ciudad = ciudad;
    }

    /**
     * @return the barrio
     */
    public Barrio getBarrio() {
	return barrio;
    }

    /**
     * @param barrio
     *            the barrio to set
     */
    public void setBarrio(Barrio barrio) {
	this.barrio = barrio;
    }

    /**
     * @return the codigoPostal
     */
    public String getCodigoPostal() {
	return codigoPostal;
    }

    /**
     * @param codigoPostal
     *            the codigoPostal to set
     */
    public void setCodigoPostal(String codigoPostal) {
	this.codigoPostal = codigoPostal;
    }

    /**
     * @return the dGR
     */
    public String getDGR() {
	return DGR;
    }

    /**
     * @param dGR
     *            the dGR to set
     */
    public void setDGR(String dGR) {
	DGR = dGR;
    }

    /**
     * @return the inscripcionDGR
     */
    public String getInscripcionDGR() {
	return inscripcionDGR;
    }

    /**
     * @param inscripcionDGR
     *            the inscripcionDGR to set
     */
    public void setInscripcionDGR(String inscripcionDGR) {
	this.inscripcionDGR = inscripcionDGR;
    }

    /**
     * @return the url
     */
    public String getUrl() {
	return url;
    }

    /**
     * @param url
     *            the url to set
     */
    public void setUrl(String url) {
	this.url = url;
    }

    /**
     * @return the ingresosBrutos
     */
    public String getIngresosBrutos() {
	return ingresosBrutos;
    }

    /**
     * @param ingresosBrutos
     *            the ingresosBrutos to set
     */
    public void setIngresosBrutos(String ingresosBrutos) {
	this.ingresosBrutos = ingresosBrutos;
    }

    /**
     * @return the observaciones
     */
    public String getObservaciones() {
	return observaciones;
    }

    /**
     * @param observaciones
     *            the observaciones to set
     */
    public void setObservaciones(String observaciones) {
	this.observaciones = observaciones;
    }

    /**
     * @return the rubro
     */
    public Rubro getRubro() {
	return rubro;
    }

    /**
     * @param rubro
     *            the rubro to set
     */
    public void setRubro(Rubro rubro) {
	this.rubro = rubro;
    }

    /**
     * @return the zona
     */
    public Zona getZona() {
	return zona;
    }

    /**
     * @param zona
     *            the zona to set
     */
    public void setZona(Zona zona) {
	this.zona = zona;
    }

    /**
     * @return the eliminado
     */
    public boolean isEliminado() {
	return eliminado;
    }

    /**
     * @param eliminado
     *            the eliminado to set
     */
    public void setEliminado(boolean eliminado) {
	this.eliminado = eliminado;
    }

}
